#列表生成式(语法糖)
#要求:会写简单列表生成式,能看懂这种语法。

#需求:1.得到一个列表,[1,2,3,4,5,6,..20]
#需求:2,给定列表[1,2,3],分别计算每项元素的平方并返回,返回结果[1,4,9]
#第1题普通写法
list1=[]
for i in range(1,21):
    list1.append(i)
print(list1)

#列表生成式写法
print([i for i in range(1,21)])
#语法[变量或表达式 循环表达式 if条件]，解释器会自动把每一循环的变量作为一项插入到列表当中。
#场景:适合比较简单的列表生成,不必刻意使用。

#复杂一点的例子,循环表达式后面又跟了if表达式，只有当if条件为True，i才会加入列表。
print([i for i in range(1,21) if i%2==0])
#[2,4,6,8,10,12,14,16,18,20]

[i*i for i in range(1,11)]
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

#(了解)生成器
g=(x for x in range(1,5))
g.__next__() # 1
g.__next__() # 2

# 列表去重,不用set
a=[1,2,3,4,5,1,3]
new_a=[]
for i in a:
    if i not in new_a:
        new_a.append(i)
print(new_a)